#ifndef _HCC_ERROR_CODE_APP_OTA_H_
#define _HCC_ERROR_CODE_APP_OTA_H_

#include "ofc/ofc_types.h"
#include "hcc/hcc_error_code.h"
#include "hcc/hcc_error_code_app.h"

#ifdef __cplusplus
extern "C" {
#endif

// 不含行号的错误码生成
#define HCC_MAKE_APP_OTA_ERROR(error_code) (int)HCC_MAKE_APP_ERROR(kHccAppEcuOta, error_code, HCC_ERROR_LEVEL_ERROR)
// 含行号的错误码生成
#define HCC_MAKE_APP_OTA_ERROR_LINE(error_code) (int)HCC_ERROR(HCC_MAKE_APP_ERROR(kHccAppEcuOta, error_code, HCC_ERROR_LEVEL_ERROR))


/**
 * ECU_OTA_FRAME:
 */
enum THccAppEcuOtaErrorCodeTag
{
	kHccEcuOtaSuccess	=	HCC_ERROR_SUCCESS,			///< 成功,没有错误
	kHccEcuOtaInvalidParam	=	HCC_MAKE_APP_OTA_ERROR(1),			///<无效的参数
	kHccEcuOtaUdsWait	=	HCC_MAKE_APP_OTA_ERROR(2),			///<Uds等待
	kHccEcuOtaUdsTimeOut	=	HCC_MAKE_APP_OTA_ERROR(3),			///<Uds超时
	kHccEcuOtaUdsSendFail	=	HCC_MAKE_APP_OTA_ERROR(4),			///<Uds发送失败
	kHccEcuOtaUdsSduFail	=	HCC_MAKE_APP_OTA_ERROR(5),			///<uds的sdu错误
	kHccEcuOtaUdsParserFail	=	HCC_MAKE_APP_OTA_ERROR(6),			///<Uds解析错误
	kHccEcuOtaUdsSubTaskFail	=	HCC_MAKE_APP_OTA_ERROR(7),			///<Uds子任务失败
	kHccEcuOtaUdsReqFail	=	HCC_MAKE_APP_OTA_ERROR(8),			///<Uds请求失败
	kHccEcuOtaUdsUnsetOnSend	=	HCC_MAKE_APP_OTA_ERROR(9),			///<未定义发送函数
	kHccEcuOtaUdsRecvError	=	HCC_MAKE_APP_OTA_ERROR(10),			///<uds接收失败
	kHccEcuOtaBufferOverFlow	=	HCC_MAKE_APP_OTA_ERROR(11),			///<缓冲区溢出
	kHccEcuOtaBlockError	=	HCC_MAKE_APP_OTA_ERROR(12),			///<OTA刷写块出错
	kHccEcuOtaGetKeyStateFail	=	HCC_MAKE_APP_OTA_ERROR(13),			///<秘钥获取失败
	kHccEcuOtaGetKeyStateTimeOut	=	HCC_MAKE_APP_OTA_ERROR(14),			///<秘钥获取超时
	kHccEcuOtaGetKeySeedInvalid	=	HCC_MAKE_APP_OTA_ERROR(15),			///<无效种子
	kHccEcuOtaEcuTypeError	=	HCC_MAKE_APP_OTA_ERROR(16),			///<ECU类型不支持
	kHccEcuOtaOpenFileError	=	HCC_MAKE_APP_OTA_ERROR(17),			///<文件打开错误
	kHccEcuOtaUdsCreateError	=	HCC_MAKE_APP_OTA_ERROR(18),			///<Uds和状态机创建失败
	kHccEcuOtaMemError	=	HCC_MAKE_APP_OTA_ERROR(19),			///<内存出错
	kHccEcuOtaInvalidKey	=	HCC_MAKE_APP_OTA_ERROR(20),			///<无效key值
	kHccEcuOtaRcFail	=	HCC_MAKE_APP_OTA_ERROR(21),			///<内存校验错误
	kHccEcuOtaHeartCheckFail	=	HCC_MAKE_APP_OTA_ERROR(22),			///<3E服务发送次数超过限制
	kHccEcuOtaCancelUpgrade	=	HCC_MAKE_APP_OTA_ERROR(23),			///<用户已经按下取消升级
};
typedef enum THccAppEcuOtaErrorCodeTag THccAppEcuOtaErrorCode;


typedef Int32 THccAppEcuOtaErrorCodeLine;
#define kHccEcuOtaSuccessLine	HCC_ERROR_SUCCESS	///< 成功,没有错误
#define kHccEcuOtaInvalidParamLine	HCC_MAKE_APP_OTA_ERROR_LINE(1)	///<无效的参数
#define kHccEcuOtaUdsWaitLine	HCC_MAKE_APP_OTA_ERROR_LINE(2)	///<Uds等待
#define kHccEcuOtaUdsTimeOutLine	HCC_MAKE_APP_OTA_ERROR_LINE(3)	///<Uds超时
#define kHccEcuOtaUdsSendFailLine	HCC_MAKE_APP_OTA_ERROR_LINE(4)	///<Uds发送失败
#define kHccEcuOtaUdsSduFailLine	HCC_MAKE_APP_OTA_ERROR_LINE(5)	///<uds的sdu错误
#define kHccEcuOtaUdsParserFailLine	HCC_MAKE_APP_OTA_ERROR_LINE(6)	///<Uds解析错误
#define kHccEcuOtaUdsSubTaskFailLine	HCC_MAKE_APP_OTA_ERROR_LINE(7)	///<Uds子任务失败
#define kHccEcuOtaUdsReqFailLine	HCC_MAKE_APP_OTA_ERROR_LINE(8)	///<Uds请求失败
#define kHccEcuOtaUdsUnsetOnSendLine	HCC_MAKE_APP_OTA_ERROR_LINE(9)	///<未定义发送函数
#define kHccEcuOtaUdsRecvErrorLine	HCC_MAKE_APP_OTA_ERROR_LINE(10)	///<uds接收失败
#define kHccEcuOtaBufferOverFlowLine	HCC_MAKE_APP_OTA_ERROR_LINE(11)	///<缓冲区溢出
#define kHccEcuOtaBlockErrorLine	HCC_MAKE_APP_OTA_ERROR_LINE(12)	///<OTA刷写块出错
#define kHccEcuOtaGetKeyStateFailLine	HCC_MAKE_APP_OTA_ERROR_LINE(13)	///<秘钥获取失败
#define kHccEcuOtaGetKeyStateTimeOutLine	HCC_MAKE_APP_OTA_ERROR_LINE(14)	///<秘钥获取超时
#define kHccEcuOtaGetKeySeedInvalidLine	HCC_MAKE_APP_OTA_ERROR_LINE(15)	///<无效种子
#define kHccEcuOtaEcuTypeErrorLine	HCC_MAKE_APP_OTA_ERROR_LINE(16)	///<ECU类型不支持
#define kHccEcuOtaOpenFileErrorLine	HCC_MAKE_APP_OTA_ERROR_LINE(17)	///<文件打开错误
#define kHccEcuOtaUdsCreateErrorLine	HCC_MAKE_APP_OTA_ERROR_LINE(18)	///<Uds和状态机创建失败
#define kHccEcuOtaMemErrorLine	HCC_MAKE_APP_OTA_ERROR_LINE(19)	///<内存出错
#define kHccEcuOtaInvalidKeyLine	HCC_MAKE_APP_OTA_ERROR_LINE(20)	///<无效key值
#define kHccEcuOtaRcFailLine	HCC_MAKE_APP_OTA_ERROR_LINE(21)	///<内存校验错误
#define kHccEcuOtaHeartCheckFailLine	HCC_MAKE_APP_OTA_ERROR_LINE(22)	///<3E服务发送次数超过限制
#define kHccEcuOtaCancelUpgradeLine	HCC_MAKE_APP_OTA_ERROR_LINE(23)	///<用户已经按下取消升级

#ifdef __cplusplus
}  // extern "C"
#endif

#endif // _HCC_ERROR_CODE_APP_OTA_H_
/**
 * @
 */
